import { writeFile } from 'fs/promises'
import path from 'path'
import consola from 'consola'
import { epRoot } from '@atomize-ui/build-utils'
import pkg from '../packages/atomize-ui/package.json'

/**
 * 获取当前版本号
 * 该函数首先尝试从环境变量中获取版本号如果存在版本号前缀'v'，则将其移除
 * 如果环境变量中未提供版本号，则使用包的当前版本
 * @returns {string} 当前版本号
 */
function getVersion() {
  const tagVer = process.env.TAG_VERSION
  if (tagVer) {
    return tagVer.startsWith('v') ? tagVer.slice(1) : tagVer
  } else {
    return pkg.version
  }
}

// 调用getVersion函数获取当前版本号
const version = getVersion()

/**
 * 主函数，用于输出版本信息并将其写入到指定文件中
 * 该函数首先打印当前版本信息，然后将该信息写入到'version.ts'文件中
 */
async function main() {
  // 输出版本信息
  consola.info(`Version: ${version}`)
  // 将版本信息写入到'version.ts'文件中
  await writeFile(
    path.resolve(epRoot, 'version.ts'),
    `export const version = '${version}'\n`
  )
}

main()
